package com.yazi.mxz.person.jackson.filter;

import java.util.HashSet;
import java.util.Set;

import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.yazi.mxz.common.entity.beans.Category;
import com.yazi.mxz.common.entity.beans.Goods;
import com.yazi.mxz.common.entity.beans.GoodsClassify;

public abstract class GoodsFilter {

	public static FilterProvider getWithCatergory() {
		final Set<String> goods = new HashSet<String>();
		goods.add("addTime");
		goods.add("barCode");
		goods.add("category");
		goods.add("categoryPath");
		goods.add("descrDef");
		goods.add("descrText");
		goods.add("goodsId");
		goods.add("keywords");
		goods.add("name");
		goods.add("pic");
		goods.add("price");
		goods.add("sellDef");
		goods.add("sellExt");
		goods.add("sellMin");
		goods.add("sellUnit");
		goods.add("stockEnd");
		goods.add("subTitle");
		goods.add("title");
		goods.add("unit");
		goods.add("unitConvert");
		final Set<String> category = new HashSet<String>();
		category.add("catId");
		category.add("deep");
		category.add("name");
		category.add("pic");
		category.add("type");

		return new SimpleFilterProvider()
				.addFilter(Goods.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(goods))
				.addFilter(Category.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(category));
	}
	
	public static FilterProvider getWithCatergoryAndGoodsClassify() {
		final Set<String> goods = new HashSet<String>();
		goods.add("addTime");
		goods.add("barCode");
		goods.add("category");
		goods.add("categoryPath");
		goods.add("descrDef");
		goods.add("descrText");
		goods.add("goodsClassify");
		goods.add("goodsId");
		goods.add("keywords");
		goods.add("name");
		goods.add("pic");
		goods.add("price");
		goods.add("sellDef");
		goods.add("sellExt");
		goods.add("sellMin");
		goods.add("sellUnit");
		goods.add("stockEnd");
		goods.add("subTitle");
		goods.add("title");
		goods.add("unit");
		goods.add("unitConvert");
		final Set<String> category = new HashSet<String>();
		category.add("catId");
		category.add("deep");
		category.add("name");
		category.add("pic");
		category.add("type");
		final Set<String> classify = new HashSet<String>();
		classify.add("classifyId");
		classify.add("deep");
		classify.add("name");
		classify.add("pic");

		return new SimpleFilterProvider()
				.addFilter(Goods.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(goods))
				.addFilter(Category.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(category))
				.addFilter(GoodsClassify.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(classify));
	}

}
